<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head profile="http://gmpg.org/xfn/11">


<meta name="robots" content="noarchive">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jaco is back » A general purpose JavaScript ajax object</title>
<meta name="generator" content="WordPress 2.9.2">
<link rel="stylesheet" href="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/style.css" type="text/css" media="screen">
<link rel="shortcut icon" type="image/ico" href="http://www.jacoisback.org/wp-content/themes/coogee/images/favicon.ico">
<link rel="alternate" type="application/rss+xml" title="Jaco is back RSS Feed" href="http://www.jacoisback.org/?feed=rss2">
<link rel="pingback" href="http://www.jacoisback.org/xmlrpc.php">
<link rel="stylesheet" id="photo-galleria-css-css" href="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/galleria.css" type="text/css" media="">
<link rel="stylesheet" id="wppa_style-css" href="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/wppa_style.css" type="text/css" media="all">
<script type="text/javascript" src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/jquery.js"></script>
<script type="text/javascript" src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/jquery_002.js"></script>
<script type="text/javascript" src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/soundmanager2-nodebug-jsmin.js"></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.jacoisback.org/xmlrpc.php?rsd">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.jacoisback.org/wp-includes/wlwmanifest.xml"> 
<link rel="index" title="Jaco is back" href="http://www.jacoisback.org/">
<link rel="start" title="Reset!" href="http://www.jacoisback.org/?p=1">
<link rel="prev" title="Epigrafe per l’ acciuga" href="http://www.jacoisback.org/?p=584">
<link rel="next" title="ajaxObject tips: periodic update of contents" href="http://www.jacoisback.org/?p=626">
<meta name="generator" content="WordPress 2.9.2">
<link rel="canonical" href="http://www.jacoisback.org/?p=601">
	<link rel="stylesheet" href="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/facebook.css" type="text/css" media="screen">
	
<script type="text/javascript">
jQuery(function($) {
		
		$('ul.gallery_list').addClass('show_gallery'); // adds new class name to maintain degradability
		$('ul.show_gallery li:first').addClass('active');
		$('ul.show_gallery').galleria({
			history   : false, 
			clickNext : true,			
			onImage   : function(image,caption,thumb) { 
				
				// fade in the image & caption
				if(!($.browser.mozilla && navigator.appVersion.indexOf('Win')!=-1) ) { // FF/Win fades large images terribly slow
					image.css('display','none').fadeIn(1000);
				}
				caption.css('display','none').fadeIn(1000);
				
				// fetch the thumbnail container
				var _li = thumb.parents('li');
				
				// fade out inactive thumbnail
				_li.siblings().children('img.selected').fadeTo(500,0.8);
				
				// fade in active thumbnail
				thumb.fadeTo('fast',1).addClass('selected');
				
				// add a title for the clickable image
				image.attr('title','Next image >');				
				
			},
			
			onThumb : function(thumb) { // thumbnail effects goes here
				
				// fetch the thumbnail container
				var _li = thumb.parents('li');
								
				// if thumbnail is active, fade all the way.
				var _fadeTo = _li.is('.active') ? '1' : '0.8';
				
				// fade in the thumbnail when finnished loading
				thumb.css({display:'none',opacity:_fadeTo}).fadeIn(1500);
				
				// hover effects
				thumb.hover(
					function() { thumb.fadeTo('fast',1); },
					function() { _li.not('.active').children('img').fadeTo('fast',0.8); } // don't fade out if the parent is active
				)
			}
		});
	});	
	</script>	  <script type="text/javascript">
	  //<![CDATA[
	  (function() {
	    var d = document, s = d.createElement('script');
	    s.type = 'text/javascript';
	    s.src = 'http://o.aolcdn.com/art/merge/?f=/_media/sp/sp-player.js&f=/_media/sp/sp-player-wordpressorg.js&expsec=86400&ver=2';
	    d.getElementsByTagName('head')[0].appendChild(s);
	  })();
	  //]]>
	  </script><script src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/a.js" type="text/javascript"></script><style type="text/css">
.wpa_container {display: inline-block; vertical-align: top; text-align: left; color: inherit;}
.wpa_container a {text-decoration: none; color: #24f;}
.wpa_container a:hover {text-decoration: none; color: #02f;}
.wpa_container, .wpa_container div, .wpa_container span, .wpa_container a {margin: 0; border: 0; padding: 0; font-weight: normal; letter-spacing: normal; line-height: normal;}
.wpa_container img.wpa_play {width: 16px; height: 14px; margin: 0 5px 0 0; border: 0; padding: 0; vertical-align: baseline; background: #888;}
.wpa_container span.wpa_text {font-family: Arial, Sans-serif; font-size: 18px; font-weight: bold; letter-spacing: -1px;}
.wpa_container div.wpa_bar, .wpa_container div.wpa_bar div {height: 5px; font-size: 1px; line-height: 1px; overflow: hidden;}
.wpa_container div.wpa_bar {display: none; position: relative; margin: 0 0 0 21px; background: #eee;}
.wpa_container div.wpa_bar div {position: absolute; top: 0px; left: 0px;}
.wpa_container div.wpa_bar div.wpa_bar_load {width: 0; z-index: 10; background: #ccc;}
.wpa_container div.wpa_bar div.wpa_bar_position {width: 0; z-index: 11; background: #46f;}
.wpa_container div.wpa_bar div.wpa_bar_click {width: 100%; z-index: 12; background: transparent; cursor: pointer;}
.wpa_container div.wpa_sub {display: none; position: relative; margin: 0 0 0 22px; color: #aaa;}
.wpa_container div.wpa_sub, .wpa_container div.wpa_sub span.wpa_time, .wpa_container div.wpa_sub span.wpa_dl {font-family: Arial, Sans-serif; font-size: 11px;}
.wpa_container div.wpa_sub a.wpa_dl {position: absolute; top: 0; right: 0;}
.wpa_container div.wpa_sub span.wpa_dl_info {display: none; position: absolute; top: -130%; left: 105%; border: 1px solid #ddf; padding: 5px; background: #f2f2ff;}
</style><script type="text/javascript">
/* <![CDATA[ */
var wpa_url = 'http://www.jacoisback.org/wp-content/plugins/wpaudio-mp3-player';
var wpa_urls = [];
var wpa_pref_link_mp3 = false;
/* ]]> */
</script></head><body>

<div id="page">

	<div id="header">
		<div class="header_wrapper">
			<div class="header_left">
				<h1><a href="http://www.jacoisback.org/">Jaco is back</a></h1>
				<h2>Reloded</h2>
			</div>
			
			<div class="header_right">
				<ul>
				<li><a href="http://www.jacoisback.org/">Home</a></li>
        <li class="page_item page-item-270"><a href="http://www.jacoisback.org/?page_id=270" title="Virgin Gorda">Virgin Gorda</a></li>
<li class="page_item page-item-7"><a href="http://www.jacoisback.org/?page_id=7" title="Il ritorno di Jaco">Il ritorno di Jaco</a></li>
				</ul>
			</div>
		</div>
	</div><div id="container">
	<div id="main">
    		<div class="post" id="post-601">
			<div class="postdate">
				<div class="month">giu</div>
        <div class="date">17</div>
      </div><!-- end postdate -->
      <div class="title">
				<h2><a href="http://www.jacoisback.org/?p=601" rel="bookmark" title="Permanent Link to A general purpose JavaScript ajax object">A general purpose JavaScript ajax object</a></h2>
				<div class="postmeta">
					<span class="postmeta_author">Jaco</span>
					<span class="postmeta_category"><a href="http://www.jacoisback.org/?cat=1" title="Visualizza tutti gli articoli in Generale" rel="category">Generale</a>,  <a href="http://www.jacoisback.org/?cat=13" title="Visualizza tutti gli articoli in Tecnologia" rel="category">Tecnologia</a></span>					
					<span class="postmeta_time">2010-06-17</span>
				</div><!-- end postmeta -->
		  </div><!-- end title -->
        
      <div class="entry">
				<p style="text-align: justify;">During
the years I needed to use alway more often ajax implementations in web
design. There are several reasons to use this technology but the first
is for sure that reloading a page just to update a small quantity of
data is really annoying and looks really “not professional”.</p>
<p style="text-align: justify;">So the first thing that you can realize
in approaching ajax is that you need to write code using JavaScript,
HTML and PHP or other serve side languages and you will feel fore sure
much better if you can use something standard: for example a library.</p>
<p style="text-align: justify;">Actually, there are really tons of
libraries, scripts and codes that can help you in your job, but I never
found once that was exactly as I like. So I wrote something that I want
to share here.</p>
<p style="text-align: justify;">Te requirements I had in mind writing the code were:</p>
<p style="text-align: justify;">- Object oriented</p>
<p style="text-align: justify;">- Flexible</p>
<p style="text-align: justify;">- Multiple instances capable</p>
<p style="text-align: justify;">- Small, smaller, smallest</p>
<p style="text-align: justify;">I’m not sure if I met the last requirement, but I guess I did it for the others.</p>
<h3 style="text-align: justify;">Object oriented</h3>
<p style="text-align: justify;">It is. No more thing to say</p>
<h3 style="text-align: justify;">Flexible</h3>
<p style="text-align: justify;">I think yes, but what does it mean
“flexible”. Of course it is not possible to think that it will fit any
possible use, but will cover at least the following wide range of
situations: anytime you have to manage information coming from a server
to be placed inside a &lt;div&gt; or &lt;span&gt; (or similar) tag,
then you can use this object.</p>
<p style="text-align: justify;">One more meaning of flexible is that you can also reuse it also outside this framework, with very few and easy modifications.</p>
<h3 style="text-align: justify;">Multiple Instances</h3>
<p style="text-align: justify;">Generally speaking, you can use how may
instances of the object, is just a matter of the browser or of the
server if can manage a huge numbers of requests. But, do you really
need something like that?</p>
<h2 style="text-align: justify;">The ajaxObject object</h2>
<p style="text-align: justify;">First of all I have to thank&nbsp; this <a href="http://www.hunlock.com/blogs/The_Ultimate_Ajax_Object">Article</a>, since par of code is coming from this idea and I suggest everybody to read, since is really well written.</p>
<p style="text-align: justify;">Using the object&nbsp; is very simple and common.</p>
<p style="text-align: justify;">Firstly you have to init a new instance, then you can make the request. That’s all.</p>
<p style="text-align: justify;">You don’t need to create code to manage
timeout, a very simple (but effective) engine to generate a kind of
“progress bar” is available, and the result can be automatically placed
in you &lt;div&gt; or &lt;span&gt;</p>
<p style="text-align: justify;">But, if you need something more advanced, you have access to hooks for result and timeout callback functions.</p>
<h3 style="text-align: justify;">The script</h3>
<pre style="border: medium solid silver; overflow: scroll; height: 30em; width: 60em; background-color: azure;">/* *********************************************************
	Version 		0.2
	Rel. Notes	0.2 	added showprogressbar property to enable/disable the progress bar;

	AJAX object with multiple instaces support
	Parameters: url the url of ajax request i.e. the server
					defOutId the ID of the HTML section where output will be displayed, if null no output
					callbackFunction function that is called after response has been received. can be null or not present
	Properties 	timeout in milliseconds for request
					stattusbar true or false enable or disable the use of browser status bar
	Methods		update(passData,postMethod) set the call parameters, the post method and make the call.

	*********************************************************/

function ajaxObject(url, defOutId, callbackFunction)
{
	var that=this;  

	this.timeout=10000; // Default timeout is 10 Seconds
	this.statusbar=true; // Set to false if you don't want activities to be displayed on browser status bar
	this.bartimer=125;  // millisecond of progress bar timer.
	this.updating = false; // Used to verify if a request is already running
	this.urlCall = url; // Ajax server url
	this.defOut=defOutId; // Set the delault output ID
	this.showprogressbar=true; //So progressbar is shown
	this.callback = callbackFunction || function () { };  // Set the callback function activated when request is completed

	// Define the function that  will be called on request timeout
	var toutfunc= function()
	{
		if (that.updating) //if there is a pending reqyest abort AJAX request
		{
			that.AJAX.abort(); // abort pending request
			that.updating=false; // a new call can be done
			that.showprogress.stop(); // No more need for progress bar
   	   if (that.defOut) {document.getElementById(that.defOut).innerHTML="Timeout";} // Write the message
		}
	}
	// Set timers
	this.ttimeout= new timerObject(this.timeout,toutfunc,null); //Set timeout function
	this.ttimeout.repeat=0; // Just one shot
	this.progressbar=null;
	if (this.showprogressbar) this.progressbar= new timerObject(this.bartimer,null,this.defOut); //Set timer for progress bar
	// Now create an XML HTTP Request
	this.AJAX = null;
	if (window.XMLHttpRequest) { this.AJAX=new XMLHttpRequest();} // Not MS Browser
	else { this.AJAX=new ActiveXObject("Microsoft.XMLHTTP"); } //MS Browser
}

/* *********************************************************
	AJAX execution update method Execute a call.
	Parameters: passData parameters of the call.
					postMethod
	*********************************************************/

ajaxObject.prototype.update = function(passData,postMethod)
{
	var that=this;
	if (this.updating) { return false; } // request already pending, non need to repeat
	if (this.AJAX==null) { alert("AJAX not supported by browser"); return false; } // AJAX not supported
	this.AJAX.onreadystatechange =  function() //This function will be called any time AJAX status changes
	{
		if (that.AJAX.readyState==4)
		{
			if (that.progressbar) that.progressbar.stop(); // No more need for  progress bar
			that.ttimeout.stop(); // Disable timeout
			if (that.statusbar) window.status="Done!"; // Update the browser status bar
			if (that.defOut) {document.getElementById(that.defOut).innerHTML=that.AJAX.responseText;} //Write the result
			that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML); // Finally cal an external function
			that.updating=false; // Now a new call can be done
		}
	} 

	this.updating = new Date(); //Used to prevent cache errors adding this to the request, so the request will be new anytime
	if (/post/i.test(postMethod)) // POST method
	{
		var uri=this.urlCall+'?'+this.updating.getTime();
		this.AJAX.open("POST", uri, true);
		this.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.AJAX.setRequestHeader("Content-Length", passData.length);
		this.AJAX.send(passData); //Send the request
	}
	else // GET method (default)
	{
		var uri=this.urlCall+'?'+passData+'&amp;timestamp='+(this.updating.getTime());
		this.AJAX.open("GET", uri, true);
		this.AJAX.send(null); //Send the request
	}
	this.ttimeout.start(); //Start timeout timer
	if (this.showprogressbar) this.progressbar.start(); //Start the progress bar
	if (this.statusbar) window.status="Processing "+ uri	; //Update browser status bar
	return true;
}

/* *********************************************************
	timer Object used for timeout and progress bar in ajax object.
	Multiple instances are supported
	Parameters: timeout in milliseconds
					timerfunc function called when timer expires can be null
					outid id of where to display the progress bar, can be null.
	properties
	counter:	incremented each time timeout expires
	timeout: timeout
	repeat: if 1 any time timer expires is resetted, if 0 just one shot.
	progbar: array of elements to be displayed sequentially as a progress bar
	methods
	start(): Activate the timer
	stop(): stop the timer

	*********************************************************/

function timerObject(timeout,timerfunc,outid)
	{
	var that=this;
	this.counter=0; //Initialize the counter
	this.timeout=timeout; // Set timeout value (milliseconds)
	this.repeat=1; // So the timer will be repeted
	this.start = function() {	that.timer=setTimeout(this.TimerCall, this.timeout);	} //Function to activate timer
	this.stop = function() { clearTimeout(this.timer);	} //Function to stop time
	this.tfunc = timerfunc || function () { }; //Set the timer function
//	this.progbar=new Array(".","..","...","....",".....","....","...","..",".");
	// The progress bar
	this.progbar=new Array("<strong>|</strong>","<strong>||</strong>","<strong>|||</strong>","<strong>||||</strong>","<strong>|||||</strong>","<strong>||||</strong>","<strong>|||</strong>","<strong>||</strong>","<strong>|</strong>");
	this.TimerCall=function()  //Timer event function
		{
		var chars=that.progbar;
		that.counter++; //Increase counter
		//Display new position of progress
		if (outid) document.getElementById(outid).innerHTML="Processing "+chars[that.counter % chars.length];
		that.tfunc(); //Call timer function
		if (that.repeat) that.start(); // If needed restart the timer
		}
	}
</pre>
<p style="text-align: justify;">Well, I think that the code is well
documented, so you can have a look and easily understand how it works.
So In the next few lines, I will make some examples to explain hot to
use it.</p>
<p style="text-align: justify;">The firs thing, as I said, is to create
an instance of the object. This is very simple to do, you just need to
write a very small code that yoou can place wherever you prefer inside
your html:</p>
<p style="text-align: justify;">&lt;script type=”text/javascript” &gt;</p>
<p style="padding-left: 30px; text-align: justify;">var af1=new ajaxObject(“ajax.php”,”ID1″);</p>
<p style="text-align: justify;">&lt;/script&gt;</p>
<p style="text-align: justify;">What this code is setting the general
parameters of your object. “ajax.php” is your server side application
while “ID1″ is the id of you &lt;span&gt; tag, where answer coming from
server will be placed.</p>
<p style="text-align: justify;">Now you have an ajax object called “af1″.</p>
<p style="text-align: justify;">Next, you have to create the space to place the results:</p>
<p style="text-align: justify;">&lt;span id=”ID1″&gt;&lt;/span&gt;</p>
<p style="text-align: justify;">will do exactly this.</p>
<p style="text-align: justify;">Finally you need something to generate
the call. You can use any possible event to call the upload method. For
example you can use the “onload” in the &lt;body&gt; tag, or the
“onclick” wherever it is allowed.</p>
<p style="text-align: justify;">&lt;body onload=’af1.update(“t=1″);’&gt;</p>
<p style="text-align: justify;">will make the request when the page is loaded</p>
<p style="text-align: justify;">or</p>
<p style="text-align: justify;">&lt;span onclick=’af1.update(“t=1″);’&gt;Click to start ajax request 2 &lt;/span&gt;</p>
<p style="text-align: justify;">will make the request any time you will
click on the test. The unload method firs parameter are the parameters
passed to the server side application.</p>
<p style="text-align: justify;">That’s really all and it’s free.</p>
<p style="text-align: justify;">Below I paste an example of html page and a small server side application to test the script.</p>
<p style="text-align: justify;"><em><br>
&lt;html&gt;<br>
&lt;head&gt;<br>
&lt;script src=”ajax.js”&nbsp; type=”text/javascript”&gt;&lt;/script&gt;<br>
&lt;script type=”text/javascript” &gt;<br>
var af1=new ajaxObject(“ajax.php”,”ID1″);<br>
var af2=new ajaxObject(“ajax.php”,”ID2″);<br>
af2.statusbar=false;<br>
function startAjax()<br>
{<br>
af1.update(“t=15″);<br>
af2.update(“t=1″);<br>
}<br>
&lt;/script&gt;</em></p>
<p><em>&lt;/head&gt;</em></p>
<p><em>&lt;body onload=’startAjax();’&gt;<br>
&lt;div&gt;&lt;span onclick=’af1.update(“t=15″);’&gt;Click to start
ajax request 1 &lt;/span&gt;&lt;span
id=”ID1″&gt;First&lt;/span&gt;&lt;/div&gt;<br>
&lt;div&gt;&nbsp;&nbsp; &nbsp;&lt;span id=”ID2″&gt;Second&lt;/span&gt;&lt;/div&gt;</em></p>
<p><em>&lt;/body&gt;&lt;/html&gt;<br>
</em></p>
<p>PHP very small application:</p>
<p><em>&lt;?php<br>
extract($_REQUEST);<br>
sleep($t);<br>
echo ‘This is server response’;<br>
?&gt;</em></p>
<h3>Updates</h3>
<p>On rel. 0.2  I’ve added a property for ajaxObject called showprogressbar that enable  or disable the progressbar.</p>
<p>This can be useful if you periodically refresh the content and want
to keep displayed the old one while retrieving the new one.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.jacoisback.org/?p=601" target="_blank"><img src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook"></a><a href="http://www.facebook.com/share.php?u=http://www.jacoisback.org/?p=601" target="_blank" title="Share on Facebook">Share on Facebook</a></p>			  <div style="clear: both;"></div>
			</div><!-- end entry -->
			
			<span class="tags"><a href="http://www.jacoisback.org/?tag=ajax" rel="tag">ajax</a>, <a href="http://www.jacoisback.org/?tag=javascript" rel="tag">javascript</a></span>      <div class="info">
				Address:  <a href="http://www.jacoisback.org/?p=601" rel="bookmark" title="A general purpose JavaScript ajax object">http://www.jacoisback.org/?p=601</a>
      </div><!-- end info -->
      
          </div><!-- end post --> 
    
		<div class="navi">
			<div class="left">« <a href="http://www.jacoisback.org/?p=584" rel="prev">Epigrafe per l’ acciuga</a></div>
			<div class="right"><a href="http://www.jacoisback.org/?p=626" rel="next">ajaxObject tips: periodic update of contents</a>  »</div>
			<div style="clear: both;"></div>
		</div><!-- end navi -->
    
		
<!-- You can start editing here. -->
<div class="commentstitle"><span class="trackback"><a href="http://www.jacoisback.org/wp-trackback.php?p=601" rel="trackback" title="Trackback URI">Trackback</a></span><h3 id="comments"><span class="commentsnumber">no comment</span> untill now</h3></div>

			<!-- If comments are closed. -->
		<p class="nocomments">Sorry, comments closed.</p>

	

				 
	</div><!-- end main --> 
<div id="sidebar">
	<ul>
		
				<li id="recent-posts-2" class="widget widget_recent_entries">		<h2 class="widgettitle">Articoli recenti</h2>
		<ul>
				<li><a href="http://www.jacoisback.org/?p=637" title="Cittadinanza italiana? La butto nel cesso…">Cittadinanza italiana? La butto nel cesso… </a></li>
				<li><a href="http://www.jacoisback.org/?p=626" title="ajaxObject tips: periodic update of contents">ajaxObject tips: periodic update of contents </a></li>
				<li><a href="http://www.jacoisback.org/?p=601" title="A general purpose JavaScript ajax object">A general purpose JavaScript ajax object </a></li>
				<li><a href="http://www.jacoisback.org/?p=584" title="Epigrafe per l’ acciuga">Epigrafe per l’ acciuga </a></li>
				<li><a href="http://www.jacoisback.org/?p=578" title="Oggi vi parlerò di jazz , porcini e qualcos’altro.">Oggi vi parlerò di jazz , porcini e qualcos’altro. </a></li>
				</ul>
		</li>
<li id="categories-219020831" class="widget widget_categories"><h2 class="widgettitle">Categorie</h2>
		<ul>
	<li class="cat-item cat-item-6"><a href="http://www.jacoisback.org/?cat=6" title="Visualizza tutti gli articoli archiviati in Archivio">Archivio</a> (8)
</li>
	<li class="cat-item cat-item-85"><a href="http://www.jacoisback.org/?cat=85" title="Visualizza tutti gli articoli archiviati in Cucina">Cucina</a> (1)
</li>
	<li class="cat-item cat-item-1"><a href="http://www.jacoisback.org/?cat=1" title="Visualizza tutti gli articoli archiviati in Generale">Generale</a> (24)
</li>
	<li class="cat-item cat-item-8"><a href="http://www.jacoisback.org/?cat=8" title="Visualizza tutti gli articoli archiviati in Kilombo">Kilombo</a> (12)
</li>
	<li class="cat-item cat-item-4"><a href="http://www.jacoisback.org/?cat=4" title="Visualizza tutti gli articoli archiviati in Personali">Personali</a> (8)
</li>
	<li class="cat-item cat-item-7"><a href="http://www.jacoisback.org/?cat=7" title="Visualizza tutti gli articoli archiviati in Politica">Politica</a> (9)
</li>
	<li class="cat-item cat-item-13"><a href="http://www.jacoisback.org/?cat=13" title="Anonimi in rete? Spoofing? Crackare una rete? 
Queste ed altre diavolerie raccolte in giro.">Tecnologia</a> (2)
</li>
		</ul>
</li>
<li id="linkcat-3" class="widget widget_links"><h2 class="widgettitle">Amici</h2>

	<ul class="xoxo blogroll">
<li><a href="http://zen4cg.blogspot.com/">Claudio</a></li>
<li><a href="http://www.ileanadellamatera.net/" title="Pittrice molto brava ed anche una bella persona: supporta con alcune immagini delle sue opere una mia storia">Ileana Della Matera</a></li>

	</ul>
</li>

<li id="meta-2" class="widget widget_meta"><h2 class="widgettitle">Meta</h2>
			<ul>
						<li><a href="http://www.jacoisback.org/wp-login.php">Collegati</a></li>
			<li><a href="http://www.jacoisback.org/?feed=rss2" title="Abbonati a questo sito usando RSS 2.0">Voce <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="http://www.jacoisback.org/?feed=comments-rss2" title="Gli ultimi commenti di tutti gli articoli in formato RSS"><abbr title="Really Simple Syndication">RSS</abbr> dei commenti</a></li>
			<li><a href="http://wordpress.org/" title="Funziona con Wordpress.">WordPress.org</a></li>
						</ul>
</li>
		
	</ul><!-- end ul -->
</div><!-- end sidebar --></div><!-- end container -->
<div id="footer">
	<div class="footer_wrapper">
		<div class="footer_left">
			<a href="http://www.jacoisback.org/" title="Jaco is back">Jaco is back</a> · <a href="http://imotta.cn/" title="Coogee Theme">coogee theme</a> · 2008
		</div>
		<div class="footer_right">
			<a href="http://www.jacoisback.org/?feed=rss2" title="Subscribe Jaco is back">RSS Feed</a> · <a href="http://wordpress.org/" title="Powered by WordPress 2.9.2">WordPress</a> · <a href="#" title="Back to top">TOP</a>
		</div>
	</div><!-- end footer_wrapper -->
</div><!-- end footer -->
<script type="text/javascript" src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/wpaudio.js"></script></div><!-- end page -->
<div style="overflow: hidden; position: fixed; width: 8px; height: 8px; bottom: 0px; left: 0px;" class="movieContainer" id="sm2-container"><embed allowfullscreen="false" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" bgcolor="#ffffff" allowscriptaccess="always" quality="high" src="Jaco%20is%20back%20%C2%BB%20A%20general%20purpose%20JavaScript%20ajax%20object_files/soundmanager2.swf" id="sm2movie" name="sm2movie" width="100%" height="100%"></div><div style="background: transparent url(http://o.aolcdn.com/art/ch_music2/sp-spinner-bottombar-bg) repeat-x scroll 0% 0%; position: fixed; bottom: 0pt; left: 0pt; height: 30px; width: 100%; color: rgb(255, 255, 255); font-family: Arial,Helvetica,sans-serif; font-size: 12px; cursor: pointer; line-height: normal; z-index: 10000; text-align: left; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" id="streampadBottomBar"><a target="_blank" href="http://www.streampad.com/?ncid=edlinkusmusi00000001" style="margin: 0pt 8px; background: transparent url(http://o.aolcdn.com/art/sp/streampad-white-logo) no-repeat scroll 0pt 8px; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; height: 30px; width: 75px; display: block; text-decoration: none; float: right;"></a><div style="background: transparent url(http://o.aolcdn.com/art/sp/white-gray_buttons) no-repeat scroll -31px -24px; float: right; width: 1px; height: 30px; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="streampadPlayerbutton" id="streampadPlayerBorderNum1"></div><div bordernum="1" title="Pop this player into a new page" style="background: transparent url(http://o.aolcdn.com/art/sp/white-gray_buttons) no-repeat scroll -142px 8px; float: right; width: 28px; height: 30px; cursor: pointer; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="streampadPlayerbutton" id="streampadPopNew"></div><div style="background: transparent url(http://o.aolcdn.com/art/sp/white-gray_buttons) no-repeat scroll -31px -24px; float: right; width: 1px; height: 30px; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="streampadPlayerbutton" id="streampadPlayerBorderNum2"></div><div style="position: absolute; left: 10px; font-size: 12px; top: 9px; color: rgb(255, 255, 255);" id="streampadPlayerClickToPlay">Click to play all audio posts</div></div></body></html>